Crate zerocopy

source ·
Expand description

Utilities for safe zero-copy parsing and serialization.

This crate provides utilities which make it easy to perform zero-copy parsing and serialization by allowing zero-copy conversion to/from byte slices.

This is enabled by three core marker traits, each of which can be derived (e.g., #[derive(FromBytes)]):

  • FromBytes indicates that a type may safely be converted from an arbitrary byte sequence
  • AsBytes indicates that a type may safely be converted to a byte sequence
  • Unaligned indicates that a type’s alignment requirement is 1

Types which implement a subset of these traits can then be converted to/from byte sequences with little to no runtime overhead.

Note that these traits are ignorant of byte order. For byte order-aware types, see the byteorder module.

Re-exports

Modules

  • Byte order-aware numeric primitives.

Structs

  • A length- and alignment-checked reference to a byte slice which can safely be reinterpreted as another type.

Traits

  • Types which are safe to treat as an immutable byte slice.
  • A mutable or immutable reference to a byte slice.
  • A mutable reference to a byte slice.
  • Types for which any byte pattern is valid.
  • Types with no alignment requirement.

Derive Macros